As shown in FIG. 1, a modern computer system 1 includes a virtual machine manager (VMM) 10 that allows partitioning the computer system resources into multiple virtual machines (VM) 20, 30, 40 and to share resources between such VMs. Media 50 comprises separate drivers for the different operating systems executed in the VMs 20, 30, 40. The VMM 10 is controlled via a management console 15, which is connected to the VMM 10 via a network 90. The assignment of resources to VMs is defined by the system administrator on the management console 15, which results to the configuration 55 of the VMM 10. An adapter 60 adds resources 70 and 80 to the computer system 1. Whether it is supported to share or partition those resources 70 and 80 depends on the capabilities of the adapter 60 and corresponding firmware.
Resources of Peripheral Component Interconnect (PCI) Express compliant adapters are made accessible to VMs via PCI Express functions (in the following called functions). PCI Express is described in the PCI Express Base Specification, Revision 2.1, Mar. 4, 2009. Each function can be assigned to no more than one VM by the VMM. This is shown in FIG. 2 for the computer system 1 from FIG. 1. The functions 100 and 110 of the adapter 60 are assigned to VM 20. The function 120 is assigned to the VM 40. No functions of the adapter 60 are assigned to the VM 30.
The PCI Express specification defines methods for the VMM to discover the functions provided by a PCI Express adapter. The mapping between adapter resources and adapter functions is established by the vendor of the respective PCI Express adapter. Partitioning of adapter resources is enabled by mapping distinct resources to distinct functions. Sharing of adapter resources is enabled by mapping the same resources to multiple functions. For the adapter 60 in FIG. 2, the functions 100, 110, and 120 can be discovered by the VMM 10. The resource 70 is mapped to the function 100, and the resource 80 is mapped to the functions 110 and 120.
The PCI Express specification does not define methods to discover adapter resources and their respective mapping to functions. For the adapter 60 in FIG. 2, the resources 70 and 80 cannot be discovered by the VMM 10. Thus, in order for the system administrator to be able to assign resources to VMs in the system configuration, the mapping between adapter resources and adapter functions has to be made available by means that are outside the scope of the PCI Express specification. As of today it is state of the art to provide this adapter type specific information via one of the following two methods.
In the first method, this adapter type specific information is provided in human readable form in the adapter reference manual (reference manual 130 in FIG. 2). When creating the configuration 55 for the VMM 10 via the management console 15, the system administrator has to consult the reference manual 130 to select one of the possibly multiple provided functions that correspond to the resource(s) he attempts to assign to a VM. This has the following shortcomings:                The administrator has to express the configuration not in terms of resources, but rather in terms of functions.        New engineering change levels or adapter firmware levels of a supported adapter might change the number of functions and/or their respective mapping to resources, while resources are neither changed in number nor type. In this case, the system administrator has to modify the configuration despite the fact that the adapter is externally equivalent to previous level adapters.        
In the second method, the adapter type specific information is provided in a machine comprehendible firmware component that is adapter type specific and has to be installed on a management console; e.g., from a media 140. In this case, the management console 15 will do the mapping from resources to functions; e.g., via a plug-in, which allows for the system administrator to create the system configuration in terms of resources. This has the following shortcomings:                For each new type of adapter a firmware component has to be installed on the management console. Especially in the context of enterprise server systems, which for sake of quality have a very strict distribution process to deliver such firmware components, this is a major concern.        There are two deliverables per adapter, namely the adapter itself and the respective firmware component, resulting in administration complexity due to; e.g., co-requirements between change levels of those deliverables.        